home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Diamond Collection / The Diamond Collection (Software Vault)(Digital Impact).ISO / cdr23 / csmac13a.zip / CS-COMMO.CSM < prev    next >
Text File  |  1995-01-22  |  61KB  |  1,346 lines

  1.  
  2.  ┌────────────────────────────────┐
  3.  │  Chuck Seyboldt's COMMO Macro  │   CS-MAC13A:CS-COMMO.CSM
  4.  └────────────────────────────────┘   Copyright (c) 1995
  5.                                       All rights reserved
  6.  
  7.     README.1ST contains quick start instructions.
  8.  
  9. !   You need to review this file  -AND-  COMMO.FON.
  10. !   Review the _very_ end of this file, CS-COMMO.CSM, for key assignments.
  11.  
  12.  ┌─────────────────┐
  13.  │  Startup Macro  │    In COMMO.SET,  mac=start   Startup macro label
  14.  └─────────────────┘
  15.  {:start}{unlo}
  16.          {setv ver,13}                          ;Version level set here
  17.          {ifex %_hom%cs-mac??.cfg,,1new_user}   ;If no .CFG exists, make one
  18.          {ifex %_hom%cs-mac%ver%.cfg,,1upgrade} ;If old .CFG exists, upgrade
  19.          {rope %_hom%cs-mac%ver%.cfg,alcc}      ;open .CFG file
  20.          {disp ,3,,Reading Config ... }
  21.  {:init_loop}
  22.          {read line}                        ;read CS-MACxx.CFG
  23.          {inst line,*}   {ifco init_loop}   ;skip comments in .cfg
  24.          {comp line}     {ifco init_loop}   ;skip blank lines in .cfg
  25.          {inst line,,}   {ifco ,init_loop}  ;comma reqd in active .cfg line
  26.          {setv pos,%_pos}       {decr pos}
  27.          {subs var,1,%pos,%line}            ;all before comma is var_name
  28.          {inst line,  }  {ifco ,no_coment}  ;two consecutive spaces separate
  29.          {setv pos,%_pos}       {decr pos}  ; variable def'n from comment
  30.          {subs line,1,%pos,%line}           ;%line now has var'ble & value
  31.  {:no_coment}
  32.          {inst line,,}    {setv pos,%_pos};position of comma
  33.          {leng %line}     {setv len,%_len};length of var_name+value
  34.          {decr len,%pos}        {incr pos}
  35.          {subs value,%pos,%len,%line}
  36.          {setv %%var,%value}           ;setv according to .cfg
  37.          {comp shh,y} {ifco init_loop}
  38.          {disp ,18,,%var       ^m}
  39.          {goto init_loop}              ;loop until .cfg all read
  40.  {:alcc} {disp ,3,,Reading CS-MAC%ver.CFG completed.^m^j^j}
  41.          {comp hold_dr}  {ifco alccc}
  42.          {ifex-c %hold_dr\NUL,,no_hold};check for validity of %hold_dr
  43.  {:alccc}{comp debug,y}  {ifco retu}
  44.          {setv _intp,ZGYOCAN}          ;standard built-in protocols
  45.          {setv _for1,OCA}              ;uploads forced to single file
  46.          {setv ss_r,|}                 ;frequently used sslook
  47.          {setv-e _uselog,DSZLOG}       ;DSZlog info > COMMO.LOG
  48.          {setv ring,0}                 ;ring counter for CS-PILOT
  49.          {setv ring_t}                 ;time of last RING event
  50.          {setv set}                    ;status of CS-PILOT mini-host
  51.          {setv ul_dir,%uldir}          ;save %uldir
  52.          {setv ap_ans2,%ap_ans}        ;save Autopilot host ans string
  53.          {setv qwk,qwk}  {setv rep,rep};default mail extensions
  54.          {ifex %savedir\ring.log,,alc1};if RING.LOG exists, instruct
  55.          {comp xpert,y} {ifco alc1}    ; unless xpert=y
  56.          {info-d10s0 To make RING.LOG always active, ^(aut=r_log,%%dialir^) in COMMO.SET}
  57.  {:alc1} {capm f}                      ;reset capture to 'filter' mode
  58.          {comp new,y}  {ifco 2new_user};New user taken to FON config question
  59.          {comp auto,y} {ifco do_ap}    ;Is autopilot enabled?
  60.          {comp _edd,y} {ifco fon_star} ;Is enter dialer on?
  61.                                        ;END of startup macro
  62.  {:unlo} {unlo}                        ;Handy labelname
  63.  {:retu} {retu}                        ;Very handy labelname
  64.  {:stop} {stop}                        ;Very handy labelname
  65.  
  66.  {:1upgrade}                           ;if old .cfg is found rename to
  67.          {goto upgrade,cs-mac.csm}     ; current version level
  68.  {:1new_user}                          ;if *NO* .cfg is found make one
  69.          {setv new,y}                  ;autoload macro menu; new user
  70.          {goto new_user,cs-mac.csm}
  71.  {:2new_user}
  72.          {setv new}                    ;Clear new-user flag
  73.          {info-qs0 OK!  Now, would you like to modify your FON for automatic mailruns?}
  74.          {ifco ,alc1} {goto new_bbsid,cs-mac.csm}
  75.  
  76.  {:alar} {alar %pr_alarm}
  77.          {ifer 1,ala_bee}               ;error level from internal proto
  78.          {ifex %_hom%csmerr.fil,ala_bee};error from BAT file protocol
  79.          {retu}
  80.  {:ala_bee} {beep} {retu}
  81.  {:fb_mac}  {setv fb_mac,COMMO.MAC} {retu}
  82.  ┌────────────────────────────────────────┐
  83.  │  Dynamic generating of Protocol menus  │
  84.  └────────────────────────────────────────┘
  85.  {:prot_menu}
  86.          {setv menu_pos,1}
  87.          {setv lett,ZGYOCANBDEFHIJKLMPQRSTUVWX!};protocol letters in order
  88.  {:pmenu_loop}
  89.          {subs char,%menu_pos,1,%lett}
  90.          {comp char,n} {ifco menun}             ;change menu loop
  91.          {comp eprot_%char}                     ;user defined = NUL?
  92.          {ifco-c menu%char,usr_menu}
  93.          {setv _menu%menu_pos,   %char ■ %prot_desc}
  94.          {incr menu_pos} {goto pmenu_loop}
  95.  
  96.  {:usr_menu}{setv-s prot_desc,eprot_%char} {retu}
  97.  {:menuZ} {setv prot_desc,Zmodem}     {retu}
  98.  {:menuG} {setv prot_desc,Ymodem/G}   {retu}
  99.  {:menuY} {setv prot_desc,Ymodem}     {retu}
  100.  {:menuO} {setv prot_desc,1k-Xmodem}  {retu}
  101.  {:menuC} {setv prot_desc,Xmodem CRC} {retu}
  102.  {:menuA} {setv prot_desc,ASCII}      {retu}
  103.  {:menuN} {setv count,%menu_pos}
  104.           {setv prot_des}
  105.           {decr menu_pos}
  106.           {comp l_parm} {ifco lmenu_loop}
  107.           {incr menu_pos,2}
  108.           {setv _menu%menu_pos,   N ■ NUL Modem}
  109.  {:lmenu_loop}
  110.           {incr count}
  111.           {subs char,%count,1,%lett}
  112.           {comp char,!} {ifco end_menu}
  113.           {comp eprot_%char}                     ;user defined = NUL?
  114.           {ifco lmenu_loop}
  115.  {:menu_?}{incr menu_pos}
  116.           {setv-s temp,eprot_%char}
  117.           {setv _menu%menu_pos,   %char ■ %temp}
  118.           {comp menu_pos,20}
  119.           {ifco retu,lmenu_loop}
  120.  {:end_menu} {setv lett} {setv char} {retu}
  121.  
  122.  {:msn_prot}
  123.          {setv lett,ABCDEFGHIJKLM OPQRSTUVWXYZ}
  124.          {subs _prot,%_msn,1,%lett}  {setv lett} {retu}
  125.  
  126.  ┌────────────────────────┐
  127.  │  Upload protocol menu  │
  128.  └────────────────────────┘
  129.  {:mpu}
  130.  {:ppu}
  131. {:u_prot}{call prot_menu}
  132.          {incr menu_pos,4}
  133.          {subs _mcolor,1,5,%palette}
  134.          {setv _menter,mpd}    b    c    d    e    f    g    h    i    j    k    l    m    n    o    p    q    r    s    t    u    v    w    x    y    z
  135.          {setv _mlabel,um_?,um_?,um_?,um_?,um_?,um_?,um_?,um_?,um_?,um_?,um_?,um_?,um_?,um_n,um_?,um_?,um_?,um_?,um_?,um_?,um_?,um_?,um_?,um_?,um_?,um_?}
  136.          {menu %menu_pos,24,UPload} {setv menu_pos} {retu}
  137.  
  138.  {:um_?} {call msn_prot}        ;get protocol letter
  139.          {setv menu_pos}
  140.          {setv pr_file}
  141.  {:um_#} {inst _for1,%_prot}
  142.          {ifco-c gfnu,pufn}     ;returns directly if (send).lst is OK
  143.          {ifex %_hom%csms%_prot.bat,bat_up} ;batch file has 1st priority
  144.          {comp eprot_%_prot}    ;Protocol in Commospace has second priority
  145.          {ifco ,eup_#}
  146.          {inst _intp,%_prot}    ;finally check for internal protocol
  147.          {ifco ,no_uprot}
  148.          {call um_%_prot}       ;perform internal protocol
  149.          {call del_slst} {retu} ;del (send).lst and .REP
  150.  {:no_uprot}{info-d15 You have not defined the "%_prot%" Upload Protocol}
  151.          {goto u_prot}
  152.  
  153.  {:eup_#}{call eup_%_prot}      ;command lines at end of this macro
  154.          {comp swap_prot,y} {ifco-c eup_swap,eup_} {setv cmd}
  155.          {call del_slst}  {retu}
  156.  {:eup_} {inst eprot_%_prot,$} {ifco eup_swap}
  157.             {exec-d %cmd} {retu}        ;returns with errorlevel
  158.  {:eup_swap}{exec-s %cmd} {retu}        ;does not return with errorlevel
  159.  
  160.  {:bat_up} {exec-n echo CSMERR.FIL (%_prot%) Indicating file upload error> %_hom%csmerr.old}
  161.            {comp swap_prot,y} {ifco-c batu_swap,batu_}
  162.            {call del_slst} {retu}
  163.  {:batu_}  {inst eprot_%_prot,$} {ifco batu_swap}
  164.                {exec %_hom%csms%_prot %_por %_spe %file %_pad %_irq %ver} {retu}
  165.  {:batu_swap}{exec-s %_hom%csms%_prot %_por %_spe %file %_pad %_irq %ver} {retu}
  166.  
  167.  {:no_uprot}{info-d15 You have not defined the "%_prot%" Upload Protocol}{retu}
  168.   ┌─────────────────────────────────────────────────────────┐
  169.   │  Notes:  :pufn  returns %_hom%... file list for "@" use │
  170.   │          :gfnu returns %file with one valid filename    │
  171.   │          :test_lst returns with %lfile (name of file)   │
  172.   │          :del_slst tests %lfile for .REP, .PST exts     │
  173.   └─────────────────────────────────────────────────────────┘
  174.  {:um_wc}{inst file,*} {ifco-c gfn1}  ;reject wildcards
  175.          {inst file,?} {ifco-c gfn1}  ;for Xmodem
  176.          {inst file,@} {ifco-c gfn1} {retu}
  177.  
  178.  {:z_send}{exec-n echo %pr_file>%_hom%^(send^).lst}
  179.  {:um_z} {szmo-r @%_hom%^(send^).lst} {retu}
  180.  {:yb_send}{exec-n echo %pr_file>%hom%^(send^).lst}
  181.  {:um_g} {symo-k @%_hom%^(send^).lst} {retu}
  182.  {:xk_send}{setv file,%pr_file}
  183.  {:um_o} {call um_wc} {sxmo-k %file}  {retu}
  184.  {:um_c} {call um_wc} {sxmo %file}    {retu}
  185.  {:um_a} {call um_wc} {asci-e %file}  {retu}
  186.  {:h_send}{setv _prot,h} {exec-n echo %pr_file>%_hom%^(send^).lst} {goto eup_#}
  187.  
  188.  {:um_n}
  189.  {:u_nulmodem} {comp l_parm} {ifco u_prot}
  190.          {setv _menu1,  F  Send Any File}
  191.          {setv _menu2,  M  Send *.CSM files}
  192.          {setv _menu3,  Q  Send *.QWK files}
  193.          {setv _menu4,  R  Send *.REP files}
  194.          {setv _menter,dm_n}
  195.          {setv _mlabel,,,,,,um_nf,,,,,,,um_nm,,,,um_nq,um_nr}
  196.          {menu 8,29,NUL Modem ■ SEND}
  197.          {goto pgu}
  198.  {:um_nf}{setv proto,NUL Modem} {call pufn}
  199.          {call nul_up} {setv proto} {}
  200.  {:um_nm}{exec-n echo %_hom%*.csm> %_hom%^(send^).lst} {call nul_up}{}
  201.  {:um_nq}{exec-n echo %qwkdr\*.qwk> %_hom%^(send^).lst}{call nul_up}{}
  202.  {:um_nr}{exec-n echo %repdr\*.rep> %_hom%^(send^).lst}{call nul_up}
  203.          {info-q0 Delete %repdr\*.rep now?}    {ifco ,stop}
  204.          {exec-n del %repdr\*.rep>NUL} {}
  205.  
  206.  {:del_slst}{setv file,%_hom%^(send^).lst}
  207.  {:del_lst}                            ;delete used upload list
  208.          {call alar}
  209.          {ifer 1,retu}
  210.          {exec-n del %file>NUL}
  211.          {setv file,%lfile}
  212.          {subs ext,-3,3,%file}
  213.          {comp ext,rep} {ifco del_rep}
  214.          {comp ext,pst} {ifco del_rep}
  215.          {retu}
  216.  {:del_rep}                            ;prompted .REP delete
  217.          {wind-k}                      ;times out in 10 secs to do delete
  218.          {info-d1s0 Delete %file [Y/n]?}
  219.          {setg 10,rep_gon,l}
  220.          {gets-hi ch,1}
  221.          {comp ch,n} {ifco ,rep_gon} {wind} {retu}
  222.  {:rep_gon}
  223.          {exec-n del %file>NUL} {setv lfile} {wind} {retu}
  224.  
  225.  ┌───────────────────────────────────────────────┐
  226.  │  Set download directory for %hold_dr support  │
  227.  └───────────────────────────────────────────────┘
  228.  {:pik_dld}{comp hold_dr} {ifco dl_2dl,dl_2hd}
  229.  {:dl_2dl} {setv dl_dir,%dldir}   {retu}
  230.  {:dl_2hd} {setv dl_dir,%hold_dr} {retu}
  231.  
  232.  {:strew_}
  233.          {comp %hold_dr} {ifco no_hold}
  234.          {info-qs0  Sort contents of Hold directory now? } {ifco ,retu}
  235.  {:bya}  {call strew_,cs-logon.csm} {retu}
  236.  {:no_hold}
  237.          {info-d20s0 Hold directory invalid ^(%%hold_dr,%hold_dr^) ■ Change CS-MAC%ver.CFG}
  238.          {setv hold_dr}
  239.          {retu}
  240.  
  241.  ┌──────────────────────────┐
  242.  │  Download protocol menu  │
  243.  └──────────────────────────┘
  244.  {:mpd}
  245.  {:ppd}
  246. {:d_prot}{call prot_menu}
  247.          {incr menu_pos,4}
  248.          {subs _mcolor,7,5,%palette}
  249.          {setv _menter,mpu}    b    c    d    e    f    g    h    i    j    k    l    m    n    o    p    q    r    s    t    u    v    w    x    y    z
  250.          {setv _mlabel,dm_?,dm_?,dm_?,dm_?,dm_?,dm_?,dm_?,dm_?,dm_?,dm_?,dm_?,dm_?,dm_?,dm_n,dm_?,dm_?,dm_?,dm_?,dm_?,dm_?,dm_?,dm_?,dm_?,dm_?,dm_?,dm_?}
  251.          {menu %menu_pos,24,DOWNload} {setv menu_pos} {retu}
  252.  
  253.  {:dm_?} {call msn_prot}        :get protocol letter
  254.          {setv menu_pos}
  255.          {setv pr_file}
  256.  {:dm_#} {call pik_dld}         ;hold dir or download dir?
  257.  {:d_mail}                      ;dl_dir set by CS-LOGON mailrun routine
  258.          {ifex %_hom%csmr%_prot.bat,bat_dn};batch file has 1st priority
  259.          {comp eprot_%_prot}    ;Protocol in Commospace has second priority
  260.          {ifco ,edn_#}
  261.          {inst _intp,%_prot}    ;finally check for internal
  262.          {ifco ,no_dprot}
  263.          {call dm_%_prot} {call alar} {retu}
  264.  {:no_dprot}{info-d15 You have not defined the "%_prot%" Download Protocol}
  265.          {goto d_prot}
  266.  
  267.  {:edn_#}{call edn_%_prot}      ;command lines at end of this macro
  268.          {comp swap_prot,y} {ifco-c edn_swap,edn_} {setv cmd}
  269.          {call alar} {retu}
  270.  {:edn_} {inst eprot_%_prot,$} {ifco edn_swap}
  271.             {exec-d %cmd} {retu}        ;returns with errorlevel
  272.  {:edn_swap}{exec-s %cmd} {retu}        ;does not return with errorlevel
  273.  
  274.  {:bat_dn} {exec-n echo CSMERR.FIL (%_prot) Indicating file download error> %_hom%csmerr.old}
  275.            {comp swap_prot,y} {ifco-c batd_swap,batd_}
  276.            {call alar} {retu}
  277.  {:batd_}  {inst eprot_%_prot,$} {ifco batd_swap}
  278.                {exec %_hom%csmr%_prot %_por %_spe %dl_dir %_pad %_irq %ver} {retu}
  279.  {:batd_swap}{exec-s %_hom%csmr%_prot %_por %_spe %dl_dir %_pad %_irq %ver} {retu}
  280.  
  281.  {:z_recv}{setv dl_dir,%pr_file}  called from mosthost
  282.  {:dm_z} {goto zmr_%zr_mode}      Zmodem batch
  283.  {:zmr_}
  284.  {:zmr_s}{rzmo %dl_dir}  {retu}   Skip (default)
  285.  {:zmr_r}{rzmo-r %dl_dir}{retu}   Resume
  286.  {:zmr_n}{rzmo-n %dl_dir}{retu}   Rename
  287.  {:zmr_o}{rzmo-y %dl_dir}{retu}   Overwrite
  288.  
  289.  {:yg_recv}{setv dl_dir,%pr_file} called from mosthost
  290.  {:dm_g} {rymo-gy %dl_dir} {retu}
  291.  {:yb_recv}{setv dl_dir,%pr_file} called from mosthost
  292.  {:dm_y} {rymo-y %dl_dir}  {retu}
  293.  {:dm_o} {setv file,%dl_dir%\} {inpu file,Filename to Download (1k-Xmodem)} {rxmo %file} {retu}
  294.  {:dm_c} {setv file,%dl_dir%\} {inpu file,Filename to Download (Xmodem CRC)}
  295.  {:xc_recv} {comp pr_file} {ifco-c ,pr_f-2-f}
  296.          {rxmo %file} {retu}
  297.  {:pr_f-2-f}{setv file,%pr_file} {retu} for mosthost
  298.  {:dm_a} {goto capture_}
  299.  {:h_recv}{setv _prot,h} {setv dl_dir,%pr_file} {goto d_mail} called by mosthost
  300.  
  301.  {:dm_n}
  302.  {:d_nulmodem} {comp l_parm} {ifco d_prot}
  303.          {setv _menu1,  F  Receive Any File}
  304.          {setv _menu2,  M  Receive *.CSM files}
  305.          {setv _menu3,  Q  Receive *.QWK files}
  306.          {setv _menu4,  R  Receive *.REP files}
  307.          {setv _menter,um_n}
  308.          {setv _mlabel,,,,,,dm_nf,,,,,,,dm_nm,,,,dm_nq,dm_nr}
  309.          {menu 8,32,NUL Modem ■ RECEIVE}
  310.          {goto pgd}
  311.  {:dm_nf}{setv file,%dldir}{inpu file,NUL Modem ■ Download directory}
  312.          {call nul_dn} {}
  313.  {:dm_nm}{setv file,%dldir}{call nul_dn}
  314.          {info-q Shell _and_ copy *.CSM from %dldir to %_hom%?}
  315.          {ifco ,stop}{exec-sw5 copy %dldir\*.csm %_hom%*.csm}{}
  316.  {:dm_nq}{setv file,%qwkdr}{call nul_dn} {}
  317.  {:dm_nr}{setv file,%repdr}{call nul_dn} {}
  318.  
  319.  ┌────────────────────────────┐
  320.  │  NUL modem file transfers  │
  321.  └────────────────────────────┘
  322.  {:loc_por}                          ;routine to set port
  323.          {setv por,%_por}            ;save dial-out port
  324.          {setv spe,%_spe}            ;save dial-out speed
  325.          {sete-p0 o_dial}            ;reset on ESCape
  326.          {parm %l_parm}              ;l_parm == speed,,port
  327.          {wind-k}                    ;save windows
  328.          {setv _mlabel,nul_a}        ;set label for 'A'
  329.          {keys 61}                   ;stuff 'A' keystroke
  330.          {menu 13,64,%nul_s}         ;display "NUL Modem"
  331.  {:nul_a}{setv savlog,%_uselog}      ;no log of NUL xfer
  332.          {setv _uselog,%l_use}       ; if %l_use == NUL
  333.          {comp _uselog} {ifco retu}
  334.          {wope-a %_uselog}           ;open NULmodem xferlog
  335.          {writ} {writ %_dat   %_tim} ;mark time
  336.          {wclo} {retu}
  337.  
  338.  {:nul_up}{sete-p0 o_dial}
  339.          {ifex %_hom%^(send^).lst,,no_file}
  340.          {setv nul_s,   NUL Modem   } {call loc_por}    ;set local port/log
  341.          {szmo-r @%_hom%^(send^).lst} {goto o_dial}     ;reset after upload
  342.  
  343.  {:nul_dn}{sete-p0 o_dial}
  344.          {setv nul_s,   NUL Modem  }  {call loc_por}    ;set local port/log
  345.          {rzmo-n %file}
  346.  {:o_dial}                                              ;post-action reset
  347.          {info-d10s0 NUL modem ■ Errorlevel = %_err}
  348.          {wind}                                         ;clear windows
  349.          {parm %spe,,%por}                              ;Reset port
  350.          {setv por} {setv spe} {setv nul_s}             ;save variable space
  351.          {setv _uselog,%savlog} {setv savlog}           ;reset uselog
  352.          {call del_slst} {retu}
  353.  
  354.  {:no_file} {info-d5s0 ^(send^).lst not found} {goto um_n}
  355.  
  356.  ┌─────────────────────────────────┐
  357.  │  Pick upload filename selector  │
  358.  └─────────────────────────────────┘
  359.  {:q_exp}{info-d15s0 Upload List Manager is an Expert feature.  Taking you to see @ML help!}
  360.          {setv var,@ml}{setv stuft,y}{goto csmhc,cs-mac.csm}
  361.  {:xfl_m}{setv _mlabel,,,,,ed_snd,,,,,,,,,,,pm_p,mm_ml,pm_r,1_fil,,selud}{retu}
  362.  
  363.  {:pufn} {sete}
  364.          {comp action,on} {ifco retu}   ;skip checking if "in action"
  365.          {ifex %_hom%^(send^).lst,,puf1};test then use existing
  366.          {setv file,%_hom%^(send^).lst} ; upload list
  367.          {call test_lst} {setv file,%lfile} {retu}
  368.  {:puf1} {setv _menu1, P ■ PNS}
  369.          {setv _menu2, R ■ REP file}
  370.          {setv _menu3, S ■ Single file input}
  371.          {setv _menu4, E ■ Edit ^(send^).lst}
  372.          {setv _menu6, Q ■ to List Manager}
  373.          {setv _menter,pm_p}
  374.          {setv _mlabel,,,,,ed_snd,,,,,,,,,,,pm_p,q_exp,pm_r,1_fil,,selud}
  375.          {comp xpert,y} {ifco-c xfl_m}
  376.          {menu 10,28,Make ^(send^) List}
  377.          {ifca ,stop} {send ^x^x^x^x^x^x^x} {}
  378.  {:ed_snd}{setv file,%_hom%^(send^).lst} {goto ed_lst}
  379.  {:pm_p} {setv file,%_hom%^(send^).lst}
  380.          {ifex %ext_fl,pns}
  381.          {comp fb_mac} {ifco-c fb_mac}  ;make sure %fb_mac is defined
  382.          {ifex %_hom%%fb_mac,sel_m}
  383.          {goto ed_lst}                  ;only if neither PNS or COMMO.MAC exist
  384.  {:sel_m}{goto select,%fb_mac}          ;this routine ends w/(retu) command
  385.  {:pns}  {exec-n cd %uldir}             ;Pick N Send
  386.          {exec-d %ext_fl %file -F}
  387.          {retu}
  388.  {:pm_r} {setv file,%repdr\%bbsid.%rep}
  389.          {inpu file,REP to upload}
  390.          {ifex %file,w_fil} {}
  391.  {:1_fil}{call gfnu}
  392.          {inst file,@} {ifco ed_snd}    ;edit send.lst
  393.          {ifex %file,,stop}             ;gfnu checks filenames, but not when
  394.  {:w_fil}{wope %_hom%^(send^).lst}      ; ESC leaves gfnu
  395.          {writ %file} {wclo} {retu}
  396.  
  397.  ┌──────────────────────────────┐
  398.  │  Get Single Upload FileName  │
  399.  └──────────────────────────────┘
  400.  {:gfnu} {comp action,on} {ifco retu}   ;if in action file, no checking
  401.          {ifex %_hom%^(send^).lst,,gfn1};test then use existing
  402.          {setv file,%_hom%^(send^).lst} ; upload list
  403.          {call test_lst} {setv file,%lfile} {retu}
  404.  {:gfn1} {sete-p0 retu} {setv file,%uldir\}
  405.  {:gfn2} {inpu file,Filename for %proto% upload (.ZIP default)}
  406.          {comp file,%uldir\} {ifco stop}
  407.          {comp file} {ifco stop}
  408.          {setv fileh,%file}
  409.          {inst file,@}  {ifco retu}
  410.          {inst file,*}  {ifco chek}
  411.          {inst file,.}  {ifco chek}
  412.          {ifex %file,fretu}
  413.          {setv file,%file%.zip}
  414.  {:chek} {ifex %file,fretu}
  415.  {:mask} {exec-nw15 dir %fileh*.*}
  416.          {setv file,%fileh}
  417.          {goto gfn2}
  418.  {:fretu}{setv fileh}
  419.          {setv lfile,%file}        ;save value for send description
  420.          {call w_fil} {retu}       ; via Alt-M,L,L  facility
  421.  
  422.  ┌───────────────────────────┐
  423.  │  Upload filelist Manager  │
  424.  └───────────────────────────┘
  425.   *  subroutine to pick and use a file upload list
  426.  {:ul_mngr}
  427.  {:mm_ml}{pops} {push} {sete}                   ;hold to support calling :selud
  428.          {ifex %_hom%^(send^).lst,mng_snd}      ;Choose (send).lst
  429.          {ifex %uldir\*.lst,do_mmml,pufn}       ;skip confusing menu if no *.LST
  430.          {comp xpert,y}{ifco ,pufn}             ;skip confusing menu if no xpert
  431.  {:do_mmml}
  432.          {call mm_mlmake}
  433.          {setv _menu%count, Q ■ Edit Lists}   {incr count}
  434.          {setv _menu%count, L ■ Last Filename Information}{incr count,2}
  435.          {setv _menu%count,       <CR> to make ^(send^).lst}
  436.          {setv _menter,puf1}
  437.          {setv _mlabel,u_sel,u_sel,u_sel,u_sel,u_sel,u_sel,u_sel,u_sel,u_sel,u_sel,,l_fil,,,,,q_sel,,,,selud}
  438.          {incr count,4}
  439.          {subs _mcolor,13,5,%palette}
  440.          {menu %count,44,Copy Upload List to ^(send^).lst}{pops-c}
  441.          {call clr_ffn} {}
  442.  
  443.   *  subroutine to pick and edit a file upload list
  444.  {:q_sel}{comp xpert,y} {ifco ,pufn}
  445.          {pops} {push} {rclo} {sete}
  446.          {call mm_mlmake}
  447.          {setv _menu%count, Q ■ Quit to "Copy to ^(send^)" Menu}{incr count}
  448.          {setv _menu%count, R ■ Remove/Delete a filelist}{incr count,2}
  449.          {setv _menu%count,       <CR>  to make a new *.lst}
  450.          {setv _menter,mm_lstmake}
  451.          {setv _mlabel,l_ed,l_ed,l_ed,l_ed,l_ed,l_ed,l_ed,l_ed,l_ed,l_ed,,,,,,,mm_ml,q_selr,,,selud}
  452.          {subs _mcolor,19,5,%palette}
  453.          {incr count,4}
  454.          {menu %count,44,  Edit Upload Filelists  }
  455.          {call clr_ffn} {}
  456.  {:l_ed} {pops}
  457.          {comp ffn%_msn} {ifco q_sel}
  458.          {setv-s file,ffn%_msn} {call clr_ffn}
  459.          {setv file,%uldir\%file} {call ed_lst} {goto q_sel}
  460.  
  461.   *  subroutine to make new upload list file
  462.  {:mm_lstmake} {setv file,%uldir\.lst} {keys 4be0,4be0,4be0,4be0}
  463.          {inpu file,Make Upload *.lst}
  464.          {comp file,%uldir\.lst} {ifco q_sel}
  465.          {info-qs0 Use File Picker?}
  466.          {ifco ,mm_led}
  467.          {ifex %ext_fl,mmlpns}
  468.          {comp fb_mac} {ifco-c fb_mac}
  469.          {ifex %_hom%%fb_mac,mmlsel}
  470.  {:mm_led}{edit %file} {call test_lst} {goto q_sel}
  471.  {:mmlsel}{info-d15 %fb_mac:select makes only ^(send^).lst} {goto q_sel}
  472.  {:mmlpns}{exec-n cd %uldir}
  473.          {exec-d %ext_fl %file -F} {goto q_sel}
  474.  
  475.   *  subroutine to choose list file to delete
  476.  {:q_selr}{pops}
  477.          {call mm_mlmake}
  478.          {decr count} {setv _menu%count}
  479.          {setv _menter,q_sel}
  480.          {setv _mlabel,l_de,l_de,l_de,l_de,l_de,l_de,l_de,l_de,l_de,l_de}
  481.          {subs _mcolor,31,5,%palette}
  482.          {incr count,2}
  483.          {menu %count,44,  Delete %uldir\*.lst  } {goto q_sel}
  484.  {:l_de}
  485.          {comp ffn%_msn} {ifco q_selr}
  486.          {setv-s file,ffn%_msn}
  487.          {call clr_ffn}
  488.          {info-q0s0 Delete %uldir\%file?}
  489.          {ifco ,q_selr}
  490.          {exec-n del %uldir\%file>NUL} {goto q_selr}
  491.  
  492.   *  subroutine to make menu from *.lst files in %uldir
  493.  {:mm_mlmake}
  494.          {setv count,1}
  495.          {file %uldir\*.lst}
  496.          {ifco ,nulul}
  497.  {:ulm_l}{setv pad,            } {setv pad_l,12}
  498.          {leng %_ffn} {decr pad_l,%_len} {subs pad,1,%pad_l,%pad} {setv pad_l}
  499.          {setv _menu%count, %count ■ %_ffd  %_ffn %pad (%_ffs% bytes)}
  500.          {setv ffn%count,%_ffn}
  501.          {incr count}
  502.          {file-x %uldir\*.lst} {ifco ulm_l}
  503.          {incr count}
  504.  {:nulul}{setv _menu%count, U ■ Change Upload Dir  (%uldir)}
  505.          {incr count}
  506.          {retu}
  507.  
  508.   *  subroutine to copy selected *.lst to (send).lst
  509.  {:u_sel}{pops-c} {setv-s file,ffn%_msn} {call clr_ffn}
  510.          {exec-n copy %uldir\%file %_hom%^(send^).lst>NUL}
  511.          {comp file} {ifco ed_snd} {setv file}
  512.  
  513.   *  subroutine to work with (send).lst
  514.  {:mng_snd} {pops}
  515.          {setv file,%_hom%^(send^).lst} ;work with (send).lst
  516.          {call test_lst}                ;test filenames in (send).lst
  517.          {ifex %_hom%^(send^).lst,,retu}; in case :test_lst erases small file
  518.  {:nxtfi}{rope %_hom%^(send^).lst,rclo} ;open send list
  519.  {:nxtfl}{read ffile}                   ;read filename
  520.  {:lfile}{setv file,%ffile}             ;%fil is short name, %file is complete
  521.          {call dr_of} {setv fil,%file} {setv file,%ffile}
  522.          {setv _menu1, N,U  ■  %fil  (fileName)}
  523.          {setv _menu2, D,I  ■  Description}
  524.          {setv _menu3,  S   ■  Short description}
  525.          {setv _menu5,  E   ■  Edit  ^(send^).lst}
  526.          {setv _menu6,  R   ■  Reset/Cancel}
  527.          {setv _menu8,      <CR>  next  filename}
  528.          {setv _menter,nxtfl}
  529.          {setv _mlabel,,,,mmold,ed_snd,,,,mmold,,,,,mm_oln,,,q_sel,mm_olr,mm_ols,,mm_oln}
  530.          {menu 12,38,File Upload Info}
  531.  {:rclo} {rclo} {retu}
  532.  {:mm_oln} {rclo} {send ~%fil|}  {retu}
  533.  {:mm_olr} {rclo} {exec-n del %_hom%^(send^).lst>NUL} {setv lfile} {goto mm_ml}
  534.  {:mm_ols} {setv omax_desc,%max_desc} {setv max_desc,1}
  535.            {call mmold}
  536.            {setv max_desc,%omax_desc} {setv omax_desc} {retu}
  537.  
  538.   *  subroutine to use "last filename tested"  %lfile
  539.  {:l_fil}{pops} {comp lfile} {ifco no_lfile}
  540.          {setv ffile,%lfile}
  541.          {rope %uldir\NUL,rclo}{goto lfile}
  542.  {:no_lfile}{info-d5s0 There is No "last-file" information}{}
  543.  
  544.   *  subroutine to test each file in any list of files (listfile)
  545.   *  subroutine to edit a file list (listfile)
  546.  {:test_lst}
  547.          {file %file}                   ;look for listfile
  548.          {ifco ,stop}                   ;if no listfile, quit
  549.          {comp _ffs,3} {ifco-l del_lst} ;delete small listfile & quit
  550.          {rope %file,retu}              ;open send listfile
  551.  {:tstfi}{setv lfile,%ffile}{read ffile};read filename
  552.          {ifex %ffile,tstfi}            ;verify that all files exist
  553.          {exec-nw15 dir %ffile*.*}
  554.          {info-d8s0 %ffile doesn't exist!  ■  Re-edit ^(send^).lst}
  555.  {:ed_lst}{rclo} {edit %file}
  556.          {goto test_lst}
  557.  
  558.  {:clr_ffn} {setv count,1}
  559.  {:llr_ffn} {comp ffn%count} {ifco retu}
  560.             {setv ffn%count} {incr count} {goto llr_ffn}
  561.  ┌───────────────────────────────┐
  562.  │  Send DESC.SDI Automatically  │
  563.  └───────────────────────────────┘
  564.  {:mmold}{comp %ramdr} {ifco retu} ;make sure %ramdr is defined
  565.          {ifex %ramdr\NUL,,retu}   ;make sure %ramdr is valid
  566.          {rclo} {setv filen,file_id.diz}
  567.          {comp file,%uldir\} {ifco retu}
  568.          {exec-d %pk_un -v %file desc.sdi file_id.diz}
  569.          {ifer 1,no_dsc}
  570.  {:add_dsc}
  571.          {exec-d %pk_un -v %file %filen}
  572.          {ifer 1,chk4_sdi}
  573.          {exec-s %pk_un -o %file %ramdr\ %filen}
  574.          {rope %ramdr\%filen,end_dsc}
  575.          {setv count,1}
  576.  {:diz_loop}
  577.          {read line} {send ~%line|}
  578.          {comp max_desc} {ifco diz_loop}
  579.          {incr count} {comp count,%max_desc}
  580.          {ifco-le diz_loop,end_dsc}
  581.  {:chk4_sdi}
  582.          {setv filen,desc.sdi}
  583.          {goto add_dsc}
  584.  {:no_dsc} {info-d5s0 No description found for %file}
  585.  {:end_dsc}
  586.          {exec-n del %ramdr\%filen>NUL}
  587.          {setv filen} {retu}
  588.  
  589.  ┌───────────────────────────┐
  590.  │  Select Upload Directory  │
  591.  └───────────────────────────┘
  592.  {:selud}{setv count,0}
  593.  {:conf} {incr count}
  594.          {sete-p0 ul%count}
  595.          {inpu uldir,Select Upload directory (omit trailing"\")}
  596.          {subs temp,-1,1,%uldir} {comp temp,\} {ifco selud}
  597.          {ifex %uldir\NUL,retu,selud}
  598.  {:ul1}  {setv uldir,%_hom}
  599.          {leng %_hom} {setv len,%_len}
  600.          {decr len}   {subs uldir,1,%len,%uldir}
  601.          {setv len}   {goto conf}
  602.  {:ul2}  {setv uldir,%ramdr}  {goto conf}
  603.  {:ul3}  {setv uldir,%repdr}  {goto conf}
  604.  {:ul4}  {setv uldir,%znpak}  {goto conf}
  605.  {:ul5}  {setv uldir,%picdr}  {goto conf}
  606.  {:ul6}  {setv uldir,%dldir}  {goto conf}
  607.  {:ul7}  {setv uldir,%ul_dir} {goto conf}
  608.  {:ul8}  {retu}
  609.  
  610.  ┌──────────────────────────────────────────────┐
  611.  │  Send filenames from your download wishlist  │
  612.  └──────────────────────────────────────────────┘
  613.  {:mm_ow}{ifex %dldir\wishlist,,mm_mw}  ;Use (or edit) Download Wishlist
  614.          {info-qs0 Use Download Wishlist?}
  615.          {ifco ,mm_mw}
  616.          {rope %dldir%\wishlist,retu}
  617.          {sete-p0 r_cpd}                     ;Set ESCape to read next line
  618.  {:r_cpd}{read file}
  619.          {ifex %dldir%\%file,r_cpd}
  620.          {leng %file} {comp %_len,0} {ifco r_cpd}
  621.          {inpu file,<CR> sends "%file " to Host ■ [Esc] shows next}
  622.          {send %file } {goto r_cpd}
  623.  
  624.  ┌───────────────────────────────────────┐
  625.  │  Make and maintain download Wishlist  │
  626.  └───────────────────────────────────────┘
  627.  {:mm_mw}{ifex %dldir%\wishlist,,ed_w}  ;Make generic download list
  628.          {exec-n copy %dldir%\wishlist %dldir%\dl-temp>NUL}
  629.          {rope %dldir%\dl-temp,e_kp3}
  630.          {wope %dldir%\wishlist}
  631.  {:kp3_l}{read file}
  632.          {ifex %dldir%\%file,kp3_l}
  633.          {writ %file}  {goto kp3_l}
  634.  {:e_kp3}{wclo}
  635.          {exec-n del %dldir%\dl-temp>NUL}
  636.  {:ed_w} {goto ed_w,cs-mac.csm}
  637.  
  638.  ┌────────────────────────────────────────────────────┐
  639.  │  Download list tagging using COMMO built-in tools  │
  640.  └────────────────────────────────────────────────────┘
  641.  {:fon_star} {ifca stop}
  642.  {:fon_mark} {ifca mlist}              ;Alt-D first checks for CARRIER
  643.          {dial}  {retu}                ;If NO, bring up dialing directory
  644.  {:mlist}{scre n,%_hom%dl-list}        ;If CARRIER ONLINE, name screen image
  645.          {scro}                        ;Enter scrollback mode:
  646.          {edit %_hom%dl-list}          ;Enter COMMO's built-in editor:
  647.          {ifex %_hom%dl-list,,retu}
  648.          {info-qs0 Start DownLoad Now?};A chance to exit
  649.          {ifco go-dl,retu}             ;  before start of d/l.
  650.          {rope %_hom%dl-list}          ;Open just made list
  651.  {:go-dl}{info-q Send DL-LIST now?}
  652.          {ifco ,retu}
  653.          {rope %_hom%dl-list,end-dl}   ;Open file list for reading
  654.  {:next-1}
  655.          {read file}             ;Read one complete line into %file%
  656.          {subst file,1,12,%file} ;Strip all but first 12 characters
  657.          {send ~~~%file%|}       ;Send filename to BBS
  658.          {goto next-1}           ;Repeat read unti dl-list is all read
  659.  {:end-dl}
  660.          {exec-n del %_hom%dl-list>NUL};Delete the list after sending
  661.          {send ~|}  {retu}             ;This macro is ended.
  662.  
  663.  ┌───────────────────┐
  664.  │  File-Edit-Menus  │
  665.  └───────────────────┘
  666.  {:dr_of}{subs file,-12,12,%file}      ;take drive and dir name
  667.          {inst file,\}{ifco ,retu}     ; off variables for better
  668.          {setv pos,%_pos}{incr pos}    ; display in menus.  Examples,
  669.          {subs file,%pos,12,%file}     ; c:\co\sav\Address -> Address
  670.          {goto dr_of}                  ; c:\jr\Jabber.exe  -> Jabber.exe
  671.          {retu}
  672.  
  673.  {:cte}  {keys 73,3a,6d,78,0d}     ;Edit jumps to string ":mx"
  674.          {macr edit_cs-commo}   {} ;Edit home macro w/Ctl-E
  675.                                    ;mky=cte,1205 in COMMO.SET
  676.                                    ;Alt-ME gets here too
  677.  ┌────────────────────────────────────────┐
  678.  │  Internal or External LIST subroutine  │
  679.  └────────────────────────────────────────┘
  680.  {:list_it}
  681.          {ifex %file,,retu}
  682.          {ifex %ext_li,,in_li}
  683.          {keys 4fe0}
  684.          {exec-n %ext_li %file}    {retu}
  685.  {:in_li}{inst file,*}        {ifco retu}
  686.          {inst file,?}        {ifco retu}
  687.          {edit %file}              {retu}
  688.  
  689.  ┌────────────────────────┐
  690.  │  Macro selection menu  │
  691.  └────────────────────────┘
  692.  {:load_commo}
  693.          {comp fb_mac} {ifco-c fb_mac}  ;load COMMO.MAC as auxiliary macro
  694.          {goto alu,%fb_mac}
  695.  {:macro_menu}
  696.          {comp fb_mac} {ifco-c fb_mac}
  697.          {comp _aux,%fb_mac} {ifco-c unlo}
  698.          {ifca mm_o}   {:alm_o}
  699.          {setv _menu1, A ■ Activate  Autopilot       CS-PILOT.CSM,auto}
  700.          {setv _menu2, N ■ New BBSID for COMMO.FON   CS-MAC.CSM,new_bbsid}
  701.          {setv _menu3, F ■ Make ACTION file          CS-ACTON.CSM,act_alf}
  702.          {setv _menu4, H ■ Load HOST Mode            MOSTHOST.MAC,bbs}
  703.          {setv _menu5, R ■ Send REP files}
  704.          {setv _menu7, M ■ More Macros / submenu}
  705.          {setv _menu8, O ■ Online Macro Menu}
  706.          {setv _menu9, U ■ Unload Auxiliary Macro          %_24h%:%_min}
  707.          {setv _menter,do_ap}
  708.          {setv _mlabel,cta,,,mm_d,cte,action_make,,mm_h,,,show_keys,mm_ml,mm_m,mm_n,mm_o,mm_mp,edit_menu,send_rep,mm_ms,,unlo,var_peek,mm_mw,mx,,mm_mz}
  709.          {subs _mcolor,13,5,%palette}
  710.          {menu 13,56, CS-MAC%ver Macro Menu}
  711.          {retu}
  712.  
  713.  {:start_ap} {:cta}                        ;Start Autopilot w/Ctl-A
  714.          {ifex %_hom%cs-pilot.csm,,retu}   ;mky=cta,1e01 in COMMO.SET
  715.          {goto to_y,cs-pilot.csm}          ;Alt-M,A gets here too
  716.  
  717.  {:do_ap}{wind} {setv skip}
  718.         {comp auto,y} {ifco ,retu}
  719.         {goto auto,cs-pilot.csm}
  720.  
  721.  {:mm_d} {setv debug,y} {info-d10 Debug variable (%%debug) has been set}
  722.          {goto fon_mark}
  723.  
  724.  {:mm_h} {setv pr_down,%dldir}          ;set to Fred Brucker standards
  725.          {setv pr_up,%uldir}
  726.          {goto bbs,mosthost.mac}
  727.  {:mm_n} {call new_bbsid,cs-mac.csm} {retu}
  728.  
  729.  ┌──────────────────────────────┐
  730.  │  Offline Utility Macro Menu  │
  731.  └──────────────────────────────┘
  732.  {:mm_m} {setv _menu1, P ■ Playspace macro}
  733.          {setv _menu2, B ■ Backup Commo files to %bu_dr}
  734.          {setv _menu3, C ■ Compile a macro to .CCM}
  735.          {setv _menu4, W ■ Wishlist maintenance}
  736.          {setv _menu5, L ■ Manage Upload Filelists}
  737.          {setv _menu6, V ■ Variable Peek/Poke}
  738.          {setv _menu7, S ■ Strip comments from MAC   CS-MAC.CSM,strip}
  739.          {setv _menu8, F ■ Fgrep Utilities           CS-MAC.CSM,fgrep_ut}
  740.          {setv _menu9, H ■ Hold directory            CS-LOGON.CSM,strew_}
  741.          {setv _menu10, X ■ Add external protocol     CS-MAC.CSM,add_eprot}
  742.          {setv _menu11, Z ■ Macro under development   %dev_mac,%dev_st}
  743.          {setv _menter,do_ap}
  744.          {setv _mlabel,,back_up,compile_,,cte,fgrep_ut,,strew_,,,show_keys,q_sel,macro_menu,,mm_o,mm_mp,edit_menu,,mm_ms,,load_commo,var_peek,mm_mw,add_eprot,,mm_mz}
  745.          {menu 15,56,  Macro Utility Submenu  }
  746.          {goto macro_menu}
  747.  
  748.  {:mm_ms}{call strip,cs-mac.csm} {retu}
  749.  {:mm_mz}{call %dev_st,%dev_mac} {retu}
  750.  
  751.  {:compile_} {inpu file,What file do you want to compile?}
  752.          {ifex %_hom%%file,,no_compile}
  753.          {unlo}
  754.          {file %_hom%%file}
  755.          {inst %_ffn,.} {setv pos,%_pos}
  756.          {decr pos} {subs fnam,1,%pos,%_ffn}
  757.          {incr pos,2} {subs ext,%pos,3,%_ffn} {setv pos}
  758.          {wope-a %_hom%%file}
  759.          {writ ^(^)}
  760.          {writ  CS-MAC%ver  %_dat  %_24h%:%_min%:%_sec  ^(unlo^)}
  761.          {writ  DOS> ^(exec ren %_hom%%fnam.%ext %fnam.src^)  Autocompiler}
  762.          {writ       ^(exec ren %_hom%%fnam.ccm %fnam.%ext^)  ^(unlo^)}
  763.          {writ}
  764.          {writ       %fnam.%ext has been compiled into %fnam.CCM}
  765.          {writ       Scroll up to unload, Press ENTER to rename before unloading ....}
  766.          {writ}
  767.          {writ  ^(:auto_compile^) ^(keys 2e00,0d^) ^(macr autocompiler^)}
  768.          {wclo}
  769.          {setv fnam} {setv ext}
  770.          {goto auto_compile,%file}
  771.  {:no_compile} {info-d10s0 %_hom%%file does not exist.  Auto compile stopped.}{}
  772.  
  773.  ┌──────────────┐
  774.  │  Play Space  │
  775.  └──────────────┘
  776.  {:mm_mp}{ifex-c %_hom%play.mac,,make_play}
  777.          {goto top,play.mac}  {}
  778.  {:make_play}
  779.          {wope-a %_hom%play.mac}
  780.          {writ  CS-MAC  Playspace for testing new macro ideas}
  781.          {writ  Default PLAY.MAC made on %_mon%/%_day%/%_yea% at %_24h%:%_min%:%_sec%}
  782.          {writ} {writ  ^(:top^)  ^(keys 73,3a,6d,78,0d^)  ^(macr playsp^)}
  783.                 {writ  ^(:mx^)   ^(^)}  {writ}  {wclo}  {retu}
  784.  
  785.  ┌─────────────────────┐
  786.  │  ONLINE Macro menu  │
  787.  └─────────────────────┘
  788.  {:mm_o} {setv _menu1,       F1  ■  Key Help}
  789.          {setv _menu3, C ■ Command recall}
  790.          {setv _menu4, H ■ Hold directory change}
  791.          {setv _menu5, L ■ List manager - Uploads}
  792.          {setv _menu6, P ■ Run PCBoard ACTION}
  793.          {setv _menu7, R ■ Record Macro}
  794.          {setv _menu8, S ■ Search Address}
  795.          {setv _menu9, W ■ Use Download Wishlist}
  796.          {setv _mlabel,show_keys,strings,recall_cmd,,cte,mm_f,,mm_oh,,,mm_k,mm_ml,alm_o,,alm_o,mm_op,edit_menu,mm_or,srch_addr,,,,mm_ow,mm_ox}
  797.          {subs _mcolor,13,5,%palette}
  798.          {setv _menter,retu}
  799.          {menu 13,33, Online ■ F2 Strings }
  800.          {goto alm_o}
  801.  
  802.  ┌────────────────────────────────────────┐
  803.  │  A tool to search a file for a string  │
  804.  └────────────────────────────────────────┘
  805.  {:srch_addr}{setv file}
  806.          {inpu file,Search %address for name}
  807.          {comp file}   {ifco retu}
  808.          {setv srch_fil,%address}
  809.          {call search} {setv srch_fil}
  810.          {comp addr}   {ifco retu}
  811.          {wind-k}
  812.          {subs file,1,20,%addr}
  813.          {subs addr,25,42,%addr}
  814.          {setv _menu1, Spacebar sends ....}
  815.          {setv _menu3,%addr}
  816.          {setv _menu5, [T]elnet, [F]tp, [N]talk prefix}
  817.          {setv _mlabel,anf5}
  818.          {keys 61}
  819.          {menu 9,52,%file}
  820.  {:anf5} {setl}
  821.          {golo enf5,^[}
  822.          {golo snd5, }
  823.          {golo tnd5,t}
  824.          {golo fnd5,f}
  825.          {golo nnd5,n}
  826.          {look ^m}
  827.  {:enf5} {wind} {setv addr} {setv file} {retu}
  828.  {:snd5} {send %addr~|}       {goto enf5}
  829.  {:tnd5} {send %tn_pf %addr~|}{goto enf5}
  830.  {:fnd5} {send ftp %addr~|}   {goto enf5}
  831.  {:nnd5} {send talk %addr~|}  {goto enf5}
  832.  {:searcher}
  833.          {setv srch_fil,%savedir\}
  834.          {inpu srch_fil, Which Directory to search? }
  835.          {comp srch_fil,%savedir\} {ifco retu}
  836.          {ifex %srch_fil,,nf9} {setv file}
  837.          {inpu file, Search %srch_fil for: }
  838.  {:search}
  839.          {rope %srch_fil,eloop}
  840.          {wind-k}
  841.          {spdc n}
  842.  {:aloop}{send ^h}
  843.          {read addr}
  844.          {inst addr,%file}     {ifco ,aloop}
  845.          {subs addr,1,80,%addr}
  846.          {setv _menu1,%addr}
  847.          {setv _mlabel,nloop}
  848.          {keys 61}
  849.          {menu ,53, "S" to search  ╠═══════╣  SPACEbar to select }
  850.  {:nloop}{setl 8,aloop}
  851.          {golo aloop,s}
  852.          {golo eloop, }
  853.          {look Searching %srch_fil}
  854.          {wind} {rclo} {spdc y} {setv addr} {goto do_ap}  ;ESCape response
  855.  {:eloop}{wind} {rclo} {spdc y} {paus-t 2}  {retu}        ;SPACE response
  856.  
  857.  ┌─────────────────────────────┐
  858.  │  Command Recall Subroutine  │
  859.  └─────────────────────────────┘
  860.  {:recall_cmd} {setv count,0}
  861.          {setv lett,123456789JKLMNOPQR}
  862.  {:mm_ocl}{incr count}
  863.          {comp sc_%count} {ifco mm_ocm}         ;is there a command#n?
  864.          {setv-s cmd,sc_%count}                 ;ifso, make it a menu item
  865.          {subs char,%count,1,%lett}
  866.          {setv _menu%count, %char ■ %cmd}       ; otherwise, show menu
  867.          {comp count,19} {ifco mm_ocm,mm_ocl}   ;max # of items is 18
  868.  {:mm_ocm}{setv _menter,lrn_sc} {setv lett}     ;command recall save menu
  869.          {incr count} {setv cmd}
  870.          {setv _menu%count, <CR> ≡ Learn New Command    S ≡ Save to CFG}
  871.          {setv _mlabel,sc_,sc_,sc_,sc_,sc_,sc_,sc_,sc_,sc_,sc_,sc_,sc_,sc_,sc_,sc_,sc_,sc_,sc_,sc_sav,,,,clr_sc}
  872.          {incr count,4}
  873.          {menu %count,49,Command recall menu}{} ;show the menu
  874.  {:sc_}  {setv-s cmd,sc_%_msn}                  ;picked a command# to send
  875.          {comp cmd}{ifco stop}                  ;drop out if command is NUL
  876.          {send %cmd|}{setv cmd}            {}   ;send command otherwise
  877.  {:lrn_sc}{decr count,5}                        ;Learn new command
  878.          {setg ,stop,l}    {sete-p0 stop}
  879.          {comp count,19} {ifco-c rol_sc}        ;if >18, roll the stack
  880.          {setv _menu1,  S  ■ Learn from scrollback}
  881.          {setv _menu2,<CR>   Learn from keyboard}
  882.          {setv _menter,lrn_kb}
  883.          {setv _mlabel,,,,,,,,,,,,,,,,,,,lrn_sb}
  884.          {menu 6,34, Learn Command menu} {retu}
  885. {:lrn_kb}{disp ,,0c,^h^h^h^h^h rcl>}            ;prompt showing recall learn
  886.          {gets-i sc_%count}                     ;get and save command
  887.          {setv-s cmd,sc_%count} {send %cmd|}    ; <CR> terminates learn
  888.          {setv cmd}{setv lett}        {}        ; cleanup and end learn
  889. {:lrn_sb}{scre n,%ramdr\sc_temp} {keys 77} {scro}
  890.          {ifex %ramdr\sc_temp,,retu}
  891.          {edit %ramdr\sc_temp}
  892.          {ifex %ramdr\sc_temp,,retu}
  893.          {rope %ramdr\sc_temp} {read sc_%count}
  894.          {rclo} {exec-n del %ramdr\sc_temp>NUL}
  895.          {goto recall_cmd}
  896.  {:rol_sc}{setv cn,1}{setv cn2,2}               ;roll the stack routine
  897.  {:rol_lp}{setv-s sc_%cn,sc_%cn2}               ;move 2->1 ...
  898.          {incr cn}{incr cn2}                    ;increment counters until
  899.          {comp cn,18}{ifco ,rol_lp}             ;move 18->17
  900.          {setv count,18}{setv cn}{setv cn2}{retu};go back to learn command #18
  901.  {:clr_sc}{info-q0 Confirm wipe-out of all Saved Commands} {ifco ,stop}
  902.          {decr count,5}                         ;clear command menu
  903.  {:clr_lp}{setv sc_%count}{decr count}          ;starting with largest value
  904.          {comp count,0}{ifco stop,clr_lp}       ;until menu is clear
  905.  {:sc_sav}{setv count,1}
  906.          {rope %_hom%cs-mac%ver.cfg,sc_wrt}
  907.  {:sc_clo}{read line}
  908.          {inst line,sc_%count,}
  909.          {ifco sc_ow,sc_clo}
  910.  {:sc_wrt}{rclo}
  911.          {wope-a %_hom%cs-mac%ver.cfg}
  912.          {writ}
  913.          {writ %_dat  %_tim  Save Commands Added}
  914.  {:sc_wlo}{setv-s cmd,sc_%count}
  915.          {comp cmd} {ifco stop}
  916.          {writ sc_%count,%cmd}
  917.          {incr count}
  918.          {goto sc_wlo}
  919.  {:sc_ow}{info Your Config file already has save commands in it.  Aborting.}{}
  920.  
  921.  {:mm_oh}{inpu hold_dr,Input or Change download Hold Directory}
  922.          {comp hold_dr} {ifco retu}
  923.          {ifex %hold_dr\NUL,retu,mm_oh}
  924.  {:mm_op}{ifex %_hom%action.%abbr,,no_ab}
  925.          {info-qs0 Confirm:  Run ACTION.%abbr now?}
  926.          {ifco ,retu}    {goto action,cs-acton.csm}
  927.  {:no_ab}{info-d7 No Action file exists for this call}
  928.          {setv abbr,ZZ}
  929.          {info-q0s0 Make ACTION.%abbr?}
  930.          {ifco ,retu}
  931.          {call opena,cs-acton.csm} {goto mm_op}
  932.  {:mm_or}{ifca learn}
  933.          {setv record,y}
  934.          {comp jb_learn,y} {ifco mm_orjbl}
  935.          {call def_mac,cs-pilot.csm}
  936.          {call def_lbl,cs-pilot.csm}
  937.          {setv alrn_tim,15} {inpu alrn_tim,Seconds of idle BBS before guessing response.}
  938.  {:mm_orjbl}
  939.          {info-d10s0 Learn mode activated for one call.  Use linked macro ^(glr^)}
  940.          {goto fon_mark}
  941.  {:mm_ox}{call make_key,cs-pilot.csm} {}
  942.  
  943.  ┌──────────────────────────────┐
  944.  │  Toggles and Autopilot mode  │
  945.  └──────────────────────────────┘
  946.  {:r_log}{disp ,,,%_tim  %_dat^m}
  947.          {exec-N echo %_dat at %_24h%:%_min%:%_sec% >> %savedir\ring.log}
  948.          {goto do_ap}
  949.  
  950.  ┌───────────────────────┐
  951.  │  Toggle CAPTURE mode  │
  952.  └───────────────────────┘
  953.  {:def_cap} {setv cap,%_yea%%_mon%%_day.cap} {retu}
  954.  {:capm_f}  {setv capm,f} {retu}
  955.  {:cap_esc} {stat y} {disp %row,%col} {setv row} {setv col}
  956.          {setv capm} {setv cap} {retu}
  957.  {:capture_}
  958.          {comp capt,on} {ifco cof}
  959.          {sete-p0 cap_esc}
  960.          {setv row,%_row} {setv col,%_col} {stat n}
  961.          {disp %_slp,30,70,                                                  }
  962.          {disp %_slp,1,70,  (%_yea%%_mon%%_day.CAP) Open Capture File > }
  963.          {gets-i cap}
  964.          {inst cap,*} {ifco capture_}
  965.          {inst cap,?} {ifco capture_}
  966.          {inst cap, } {ifco capture_}
  967.          {comp cap}  {ifco-c def_cap}
  968.  {:get_capm}
  969.          {disp %_slp,50,70,CapMode [F,r,s] > }
  970.          {gets-i capm,1}
  971.          {comp capm}   {ifco-c capm_f}
  972.          {comp capm,f} {ifco set_capm}
  973.          {comp capm,r} {ifco set_capm}
  974.          {comp capm,s} {ifco set_capm}
  975.          {goto get_capm}
  976.  {:set_capm} {capm %capm}
  977.          {setv capt,on}
  978.          {capt y,%savedir\%cap}{beep}{beep}
  979.          {call cap_esc}
  980.          {exec-n echo OPENED  ■  %_dat %_tim^j>> %_cap}      {retu}
  981.  {:cof}  {setv capt}{capt n}{beep}
  982.          {exec-n echo CLOSED  ■  %_dat %_tim^j■-■-■>> %_cap} {retu}
  983.  
  984.  ┌──────────────────────────────────┐
  985.  │  Commo Help and quick reference  │
  986.  └──────────────────────────────────┘
  987.  {:show_keys} {setv stuft,y} {goto csmhs}     ;Show Key Assignments
  988.  {:commo_doc} {ifca esc_[h}                   ;DOCS assigned to :hom
  989.          {setv file,%ins_dir\*.doc}{goto list_it}  ;List Commo DOCS
  990.  {:esc_[h} {send ^[[H} {}                     ;VT102 home key
  991.  {:help_}{ifca ,hlp}{hang}{retu}        ;Dual use of Alt-H, hangup or help
  992.  {:hlp}  {ifex %_hom%cs-mac.hlp,csmh}   ;use CS-MAC.HLP if it exists
  993.  {:help} {help 0} {retu}
  994.  
  995.  {:csmhs}{goto csmhs,cs-mac.csm}   ;guts are in CS-MAC.CSM
  996.  {:csmh} {goto csmh,cs-mac.csm}    ;provides option to use COMMO help
  997.  
  998.  ┌───────────────────┐
  999.  │  Session History  │
  1000.  └───────────────────┘
  1001.  {:review_log}
  1002.          {setv file,%_uselog}   {call list_it}  ;Review Call Log
  1003.          {setv file,%l_use}     {goto list_it}  ; & NULmodem Log
  1004.  
  1005.  ┌─────────────────┐
  1006.  │  DOS Utilities  │
  1007.  └─────────────────┘
  1008.  {:dir_free} {exec-n cd %dldir}
  1009.          {exec-s %utildir%\dfr.com} {retu}      ;Directory Freedom
  1010.  {:reader}{ifex %reader,,do_ap}
  1011.          {exec-s %reader}           {goto do_ap};Mail reader
  1012.  ┌────────────────────┐
  1013.  │  Terminal Control  │
  1014.  └────────────────────┘
  1015.  {:video_}{comp vid}           {ifco v_m1} ;Toggle video mode
  1016.          {vide-m0}{setv vid}        {retu}
  1017.  {:v_m1} {vide-m1}{setv vid,1} {retu}
  1018.  {:init} {init}   {retu}
  1019.  {:toggle_} {ifca elap} {togg} {}
  1020.  {:elap} {info-d5s0 %_ela %ela %_nam} {}
  1021.  {:doorway_}{door-m0} {}
  1022.  
  1023.  ┌───────────────────────────────────────────────────┐
  1024.  │  Shell to DOS ... return to Commo home directory  │
  1025.  └───────────────────────────────────────────────────┘
  1026.  {:shel} {shel-s}                                   ;Shell To DOS
  1027.          {subs dr,1,2,%_hom}                        ;Now, return to Commo
  1028.          {leng %_hom} {setv len,%_len} {decr len,3} ; home directory
  1029.          {subs hom,3,%len,%_hom}
  1030.          {exec-n %dr} {exec-n cd %hom}
  1031.          {setv dr} {setv hom} {retu}
  1032.  
  1033.  ┌───────────────────────────────────┐
  1034.  │  Variable Peek and Poke commands  │
  1035.  └───────────────────────────────────┘
  1036.  {:var_peek}{setv var} {inpu var,See What Variable?}
  1037.          {comp var} {ifco retu}
  1038.          {setv-s value,%var}
  1039.          {inpu %%var,Variable %var,%value}      ;See a Commo variable
  1040.          {setv var} {setv value} {retu}         ;set it from here too
  1041.  
  1042.  ┌────────────────────────────────────┐
  1043.  │  Make backups of your macro files  │
  1044.  └────────────────────────────────────┘
  1045.  {:back_up}
  1046.          {exec-s %pk_zip -a %savedir\mac %_hom%*.mac %_hom%*.csm} ;Backup Macros
  1047.          {exec-s %pk_zip -a %savedir\mac %_hom%*.fon %_hom%*.adr} ;Backup FONs
  1048.          {comp %bu_dr} {ifco retu}                      ;skip copy to floppy
  1049.          {exec-n copy %savedir\mac.* %bu_dr}
  1050.          {comp chuck,y} {ifco ,retu}                    ;if %chuck=y, backup
  1051.          exec-s %pk_zip -a %dldir\estate %dldir\estate %dldir\706  ; personal
  1052.          exec-n copy %dldir\estate.z?p %bu_dr                      ; business
  1053.          {exec-s %pk_zip -a %savedir\$$ g:\q5\home.*}
  1054.          {exec-n copy %savedir\$$.z?p %bu_dr}
  1055.          {exec-n copy %_hom%reg\??-regd %bu_dr}
  1056.          {exec-n copy %_hom%reg\??-keys %bu_dr}
  1057.          {exec-n copy %dldir\letters %bu_dr}
  1058.          {goto do_ap}
  1059.  
  1060.  ┌────────────────┐
  1061.  │  Send Strings  │
  1062.  └────────────────┘
  1063.  {:alias} {send ~~%alias|} {retu}
  1064.  {:ali_m} {setv _menu1, 1  %alias} {retu}
  1065.  {:help_nam}
  1066.          {inst _ela,:}{setv pos,%_pos}{decr pos}
  1067.          {subs ela,1,%pos,%_ela}
  1068.          {comp ela,0}{ifco-g hlp}
  1069.          {comp alias} {ifco ,alias}
  1070.          {send ~~%name|}{retu}  ;Send Name
  1071.  {:strings}
  1072.          {setv _menu1, 1  %name}
  1073.          {comp alias} {ifco-c ,ali_m}
  1074.          {setv _menu2, 2  Password}
  1075.          {setv _menu3, 3  First| Last|}
  1076.          {setv _menu4, 4  %handle}
  1077.          {setv _menu5, 5  %v_ph}
  1078.          {setv _menu6, 6  %d_ph}
  1079.          {setv _menu7, 7  %b_day}
  1080.          {setv _menu9, S  Signature}
  1081.          {setv _menu10, T  Tagline}
  1082.          {setv _menu11, R  Recall Cmd}
  1083.          {setv _menter,pas}
  1084.          {setv _mlabel,nam,pas,fal,han,vph,dph,bda,,,,,,,,,,,recall_cmd,sig,send_tag}
  1085.          {subs _mcolor,25,5,%palette}
  1086.          {menu 15,12,Send ...}
  1087.          {retu}
  1088.  {:nam}  {comp alias} {ifco ,alias}        ;Substitute alias if it exists
  1089.          {send %name|}       {retu}        ;Send Name
  1090.  {:han}  {send %handle|}     {retu}        ;Send Handle
  1091.  {:fal}  {call f&l,cs-logon.csm}  {retu}   ;Send First| Last|
  1092.  {:pas}  {send %_pas|}       {retu}        ;Send Password
  1093.  {:vph}  {send %v_ph|}       {retu}        ;Send Voice Phone No.
  1094.  {:dph}  {send %d_ph|}       {retu}        ;Send Data Phone No.
  1095.  {:bda}  {send %b_day}       {retu}        ;Send Data Phone No.
  1096.  {:sig}                                    ;Send Signature
  1097.  {send                                                     %sig%|~|~SN|}{}
  1098.  
  1099.  {:init_}{ifca ,init}
  1100.          {scre n,%_hom%quote.in}           ;Capture/Quote Message
  1101.          {scro} {edit %_hom%quote.in}
  1102.          {ifex %_hom%quote.in,,equote}
  1103.          {rope %_hom%quote.in,equote}
  1104.  {:nline}{read line} {send ~-> %line%|}
  1105.          {goto nline}
  1106.  {:equote}{send  ~|}  {exec-n del %_hom%quote.in} {retu}
  1107.  
  1108.  ┌────────────────────────────────────────────────────────┐
  1109.  │  An automatic ASCII message entry system for PCBoards  │
  1110.  └────────────────────────────────────────────────────────┘
  1111.  {:pcb_asci}
  1112.          {setv file,%dldir%\} {inpu file,Name of Upload Message}
  1113.          {ifex %file%,,n_e}
  1114.          {parm ,,,,2}  {send e|}  {asci %file%,}
  1115.          {parm ,,,,0}  {send ~~|~~~sn|}
  1116.          {look %bbs_pmt}
  1117.          {wind-k}
  1118.          {setv _menu1,Delete  %file  (Y/n)?}
  1119.          {setv _mlabel,dm_l}
  1120.          {subs _mcolor,31,5,%palette}
  1121.          {keys 61} {leng %file}   {setv len,%_len} {incr len,20}
  1122.          {menu 3,%len,CS-MAC%ver} {setv len}
  1123.  {:dm_l} {setl 8,y_d}
  1124.          {golo n_e,n}
  1125.          {golo y_d,y}
  1126.          {golo y_d,^m}
  1127.          {look Delete %file%?}
  1128.  {:y_d}  {exec-n del %file}
  1129.  {:n_e}  {wind} {retu}
  1130.  
  1131.  ┌────────────────────────────────────────┐
  1132.  │  Send a Tagline from your Mail Reader  │
  1133.  └────────────────────────────────────────┘
  1134.  {:send_tag}
  1135.          {comp random_t}         ;If # of lines variable is NUL
  1136.          {ifco select_t}         ;goto select specific tagline
  1137.          {setv sec,%_min}        ;how many seconds since the hour started?
  1138.          {mult sec,60}
  1139.          {incr sec,%_sec}        ;maximum 3600 lines
  1140.          {divi sec,%random_t}    ;divide a number from 0 to 3599
  1141.                                  ; by #lines in tagfile.
  1142.          {setv rem,%_rem}        ;the remainder is a
  1143.          {incr rem}              ; pseudo random # from 1 to %random_t
  1144.          {rope %tagfile,s_tag}
  1145.          {setv count,1}
  1146.  {:t_loop}
  1147.          {read line}             ;read a tagline
  1148.          {comp count,%rem}       ;compare current line# with random#
  1149.          {ifco-E s_tag}          ;if same, send_tagline
  1150.          {incr count}            ;otherwise read next tagline
  1151.          {goto t_loop}
  1152.  {:s_tag}
  1153.          {send %tag_pf %line}    ;send the tagline
  1154.          {rclo}                  ;clean up open files
  1155.          {setv sec} {setv rem}   ;and variables
  1156.          {retu}                  ;END random tagline selection
  1157.  
  1158.  {:select_t}                     ;START specific tagline selection
  1159.          {rclo}                  ;make sure tagfile is closed
  1160.          {setv cn}               ;reset the tagline number seletion
  1161.          {sete-p0 send_tag}      ;make <ESC> empty a "wrong" choice
  1162.          {inpu cn,Choose Tagline Nº}
  1163.          {comp cn}   {ifco retu} ;if no tag number, end the routine
  1164.          {rope %tagfile,send_tag};open tagline file
  1165.          {setv count,0}          ;initialize counter
  1166.  {:t_lp}
  1167.          {incr count}            ;increment counter
  1168.          {read line}             ;read a tagline
  1169.          {comp cn,%count}        ;is this the chosen one?
  1170.          {ifco ,t_lp}            ;if not, loop back
  1171.  {:p_tag}
  1172.          {inpu line,Press Enter to Send} ;or <ESC> to skip & reselect
  1173.          {send %line^m}          ;send selected tagline
  1174.          {setv line} {setv cn}   ;reset variables
  1175.          {retu}                  ;END of sending specific tagline
  1176.  
  1177.  ┌──────────────────────────────────────────────┐
  1178.  │  A guarded Alt-X command when leaving Commo  │
  1179.  └──────────────────────────────────────────────┘
  1180.  {:exit_}{comp xtime} {ifco q_ask};xtim=NUL no timer, always ask
  1181.          {comp xtime,0} {ifco q_q};xtim=0   no menu, quit wo/asking
  1182.          {setv count,%xtime}      ;guard delay
  1183.          {wind-k}                 ;holds the menu screen in view
  1184.  {:xlop} {setv _menu1,  Exit ^(Commo^) in %count seconds}
  1185.          {setv _menu2,        "Y" to confirm}
  1186.          {setv _menu4,   "N" or SPACEBAR to deny}
  1187.          {setv _mlabel,x__2}      ;label to goto when 'A' is pressed
  1188.          {subs _mcolor,31,5,%palette}
  1189.          {keys 61}                ;press 'A' in advance
  1190.          {menu 8,33,CS-MAC%ver}   ;show the menu ....
  1191.  {:x__2} {setl 1,x__3}       ;a one second wait
  1192.          {golo q_t,y}             ;'Y' branch
  1193.          {golo noex,n}            ;'N' branch
  1194.          {golo noex, }            ;SPACEbar branch
  1195.          {look ^(Commo^) EXIT in %count seconds}
  1196.          {goto noex}              ;[ESC] response here
  1197.  {:x__3} {decr count}
  1198.          {comp count,0}           ;when counter reaches zero
  1199.          {ifco q_t,xlop}          ; goto q_t, else loop
  1200.  {:noex} {wind} {retu}       ;remove menu screens & stay
  1201.  {:q_t}  {info-d1s0 Normal Exit from Commo}     ;normal exit
  1202.  {:q_q}  {exit}
  1203.  {:q_ask}{info-q Are you sure you want to exit?}
  1204.          {ifco q_t,stop}
  1205.  
  1206.  ┌─────────────────────────────────────────────────────┐
  1207.  │  Alternate dialing directories for internet access  │
  1208.  └─────────────────────────────────────────────────────┘
  1209.  {:inet_dir}
  1210.          {ifex %_hom%cs-acton.csm,,no_csinet}
  1211.          {goto start_in,cs-acton.csm}
  1212.  {:no_csinet} {info-d15 You need CS-ACTON.CSM to operate this macro}{}
  1213.  
  1214.  {:mx}   {goto alm_o}   ;this label in AUX macro to run from Alt-M,X
  1215.                         ;also in this macro to define edit "jump-to"
  1216.  ┌────────────────────────────────────┐
  1217.  │  Test labels for Autopilot events  │
  1218.  └────────────────────────────────────┘
  1219.  {:ev_test}                              ;test point for %ev_file items
  1220.          {info-d5 Event Test1  ...  Success}
  1221.          {disp ,,,Event at %_24h%:%_min on %_dat ^j^m}
  1222.          {goto fon_dial}                 ;all events should point to dialer
  1223.  {:cdefh}{info-d5 Indirect labeling Event Test}
  1224.          {goto fon_dial}
  1225.  
  1226.  ┌───────────────────────────────────────────────────────────────┐
  1227.  │  Special link to Jim Bennett's Demodulator to get Commo Beta  │
  1228.  └───────────────────────────────────────────────────────────────┘
  1229.  {:dem}  {setl 30,retu,10,|}
  1230.          {look <ENTER>} {send ~~~|}
  1231.          {look (y/N)?}  {send ~~~|}
  1232.          {look name}    {send ~~~beta test|}
  1233.          {look password}{send ~~~guest|}
  1234.          {look ^xB00}   {rzmo-r %dldir}   {}
  1235.  
  1236.  ┌────────────────────────────────────────────────────────┐
  1237.  │  .FON -> CS-COMMO.CSM -> CS-TABLE.CSM -> CS-LOGON.CSM  │
  1238.  └────────────────────────────────────────────────────────┘
  1239.  {:glr}  {:qwk} {comp record,y} {setv record} {ifco learn}
  1240.                 {goto qwk,cs-table.csm} ;fetch BBS particulars
  1241.  {:i_qwk}       {goto i_qwk,cs-logon.csm}
  1242.  
  1243.  ┌──────────────────────────────────────────────┐
  1244.  │  User defined menu for registered Autopilot  │
  1245.  └──────────────────────────────────────────────┘
  1246. !    All editing in CS-COMMO.CSM is below this line
  1247.  {:_menu}
  1248. !  {setv _menu1,   This space is reserved }
  1249. !  {setv _menu4,        %_tim:%_sec       }
  1250. !  {setv _menu7,  for Registered Autopilot}
  1251. !  {setv _menu8,     Custom Hotkey Menu   }
  1252. !  {setv _msize,12,38} {retu}
  1253.  
  1254.  ┌─────────────────────────────────────────────────┐
  1255.  │  Function key and Autopilot hotkey Assignments  │
  1256.  └─────────────────────────────────────────────────┘
  1257. !{:pgu}         {goto u_prot}  ;Upload protocol menu
  1258. !{:pgd}         {goto d_prot}  ;Download protocol menu
  1259. !{:hom}         {goto commo_doc};LIST Commo docs
  1260. !{:nf1}         {goto help_nam};send name in first minute, get help after
  1261. !{:nf2}         {goto strings} ;menu of strings; name, password, phone, etc
  1262. !{:nf3}         {goto capture_};capture toggle
  1263. !{:nf4} {:ap_s} {goto shel}    ;with swap
  1264. !{:nf5}  F2,R   {goto recall_cmd};command recall routine
  1265. !{:nf6} {:ap_v} {:dialer}   {goto dialer,cs-mac.csm}  ;voice call phone dialer
  1266. !{:nf7}         {goto searcher};search any file for matching line
  1267. !{:nf8}         {goto pcb_asci};PCBoard ASCII message sender
  1268. !{:nf9}  @ML    {goto ul_mngr} ;Upload manager
  1269. !{:nf0}  @MMH   {goto strew_}  ;hold directory strewing
  1270. !{:nfa}         {goto start}   ;re-read cs-macxx.cfg file
  1271. !{:nfb}         {goto inet_dir};menu for *.ADR internet address books
  1272. !{:sf4}         {:send_rep} {goto send_rep,cs-mac.csm};find and send .REP and .PST files
  1273. !{:af1}         {goto dir_free};Run the DOS Program, Directory Freedom
  1274. !{:al<}         {goto var_peek};peek and poke Commo variables
  1275. !{:al=}         {goto doorway_};Toggle Doorway mode
  1276. !{:ald} {:ap_d} {goto fon_mark};Open .FON directory for mark and dial
  1277. !{:alh} {:ap_h} {goto help_}   ;Commo and CS-MAC help / ONline Hangup
  1278. !        @MK    {goto show_keys};Show keyboard assignment summary
  1279. !{:alo}         {goto init_}   ;Initialize modem / ONline message quoter
  1280. !{:alm} {:ap_m} {goto macro_menu}   ;macro menu
  1281. !{:aln}         {:fon_dial}  {goto fon_dial,cs-mac.csm} ;Multi-number BBS dialer
  1282. !{:alq} {:ap_q} {:edit_menu} {goto edit_menu,cs-mac.csm};edit menu
  1283. !{:alr} {:ap_u} {goto review_log}   ;review call and local log files
  1284. !{:alt}         {goto toggle_}      ;Toggle settings / ONline elapsed time
  1285. !{:alu}         {goto load_commo}   ;load COMMO.MAC (%fb_mac) as auxiliary macro
  1286. !{:alv}         {goto video_}       ;toggle video mode
  1287. !{:alx} {:ap_x} {goto exit_}        ;exit Commo
  1288. !       {:ap_b} {goto u_nulmodem}   ;NULmodem upload menu
  1289. !               {goto d_nulmodem}   ;NULmodem download menu
  1290. !       {:ap_f} {:action_make} {goto act_alf,cs-acton.csm}
  1291. !        @MA    {goto start_ap}     ;Make Autopilot start NOW
  1292. !        @MMB   {goto back_up}      ;ZIP and floppy *.csm & *.fon files
  1293. !        @MMC   {goto compile_}     ;Macro compile and rename
  1294. !        @MOS   {goto srch_addr}    ;Search address book
  1295. !        @MMF   {:fgrep_ut}  {goto fgrep_ut,cs-mac.csm}  ;fgrep to do searches
  1296. !        @MMX   {:add_eprot} {goto add_eprot,cs-mac.csm} ;add ext protocol
  1297. !        @QR    {goto reader}      ;run mailreader
  1298. !               {:ed_rlog}   {goto ed_rlog,cs-pilot.csm} ;edit RING.LOG
  1299. !        @MOR   {:learn}     {comp jb_learn,y} {ifco jb_learn}
  1300.                              {goto cs-learn,cs-pilot.csm};Macro recording
  1301.                              {:jb_learn} {goto jb-learn,jb-learn.mac}
  1302.  
  1303.  ┌──────────────────────────┐
  1304.  │  Mark and Dial routines  │
  1305.  └──────────────────────────┘
  1306. !{:sf1}  {unma} {setv skip}
  1307. !        {mark nlbbs,ledge},weather {goto fon_dial}
  1308. !{:sf2}  {unma} {setv skip}
  1309. !        {setv day,%_day}{divi day,2}{comp _rem,0}{ifco-e ,001}
  1310. !        {mark lisaii,direct,smtc,blink} ,after5,wolf's       ;biweekly
  1311. !{:001}  {mark forum!,demodule,betacon,mbbsfox}               ;once/week
  1312. !        {mark ledge,dataw,execpc,hawkhill,execpc,nlbbs}      ;once/week
  1313. !        {setv m_call,fon_dial} {goto fon_dial}
  1314. !{:sf3}  {unma} {mark Demodulator-BETA} {goto fon_dial}
  1315. !{:wtr}  {goto wtr,weather.mac}
  1316.  
  1317.  ┌───────────────────────────────────────────┐
  1318.  │  Autostart file transfer protocol labels  │  Autostart string
  1319.  └───────────────────────────────────────────┘  ----------------
  1320.  {:phbr} {setv _prot,h} {goto dm_#}   HS/Link   ^bS
  1321.  {:pkbr} {setv _prot,k} {goto dm_#}   Kermit    ^a# N3
  1322.  {:psbr} {setv _prot,s} {goto dm_#}   Smodem    ^xSMODEM^x
  1323.  {:pzbr} {setv _prot,z} {goto dm_#}   Zmodem    ^xB00
  1324.  
  1325.  {:phbs} {setv _prot,h} {goto um_#}   HS/Link   ^bQ
  1326.  {:pkbs} {setv _prot,k} {goto um_#}   Kermit    ^a5 S~
  1327.  {:psbs} {setv _prot,s} {goto um_#}   Smodem    ^xSMODEM^y
  1328.  {:pzbs} {setv _prot,z} {goto um_#}   Zmodem    ^xB01
  1329.  
  1330.  ┌─────────────────────────────────┐
  1331.  │  External protocol definitions  │
  1332.  └─────────────────────────────────┘
  1333.  *  To enable an external protocol, set %eprot_[protocol letter] to
  1334.  *  the protocol name (%eprot_z,Zmodem).  The protocol menu will call
  1335.  *  the command lines listed here.  Additional protocols may be added
  1336.  *  from the OFFline utility menu (Alt-M,M,X).
  1337.  
  1338. !{:eup_h} {setv cmd,%protodir\hslink.exe -@ -I2 -NV -P%_por% @%_hom%^(send^).lst} {retu}
  1339. !{:edn_h} {setv cmd,%protodir\hslink.exe -@ -C -I2 -NV -P%_por% -R -O -K -U%dl_dir} {retu}
  1340.  
  1341. !{:eup_k} {setv cmd,%protodir\kermit.exe set bell off, set file type binary, log transaction %_uselog, set port com%_por, send %file} {retu}
  1342. !{:edn_k} {setv cmd,%protodir\kermit.exe set bell off, set file type binary, log transaction %_uselog, set port com%_por, cd %dl_dir, receive} {retu}
  1343.  
  1344. !{:eup_s} {setv cmd,%protodir\smodem.exe /C /+ /e:0 /E:0 /a:%_pad /i:%_irq /g /z:%_uselog /d %dl_dir /u %uldir @%_hom%^(send^).lst} {retu}
  1345. !{:edn_s} {setv cmd,%protodir\smodem.exe /C /+ /e:0 /E:0 /a:%_pad /i:%_irq /g /z:%_uselog /d %dl_dir /u %uldir} {retu}
  1346.